package com.ybkj.o2o.mc.mapper;


import com.ybkj.o2o.mc.entity.PassengerConcats;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PassengerConcatsMapper {

  /**
   * 根据电话号码与乘客主键查询常用联系人信息.
   *
   * @param phone       电话号码
   * @param passengerId 乘客主键
   * @return 常用联系人信息
   */
  PassengerConcats selectByPhoneAndPassenger(@Param("phone") String phone,
                                             @Param("passengerId") Long passengerId);

  /**
   * 保存紧急联系人信息.
   *
   * @param concats 联系人信息
   * @return 受影响行数
   */
  int insert(PassengerConcats concats);

  /**
   * 根据联系人主键与乘客主键查询联系人信息.
   *
   * @param concatsId   联系人主键
   * @param passengerId 乘客主键
   * @return 联系人信息
   */
  PassengerConcats selectByConcatsAndPassenger(@Param("concatsId") Long concatsId,
                                               @Param("passengerId") Long passengerId);

  /**
   * 根据联系人主键与乘客主键删除紧急联系人.
   *
   * @param concatsId   联系人主键
   * @param passengerId 乘客主键
   * @return 受影响行数
   */
  int deleteByIdAndPassenger(@Param("concatsId") Long concatsId,
                             @Param("passengerId") Long passengerId);

  /**
   * 修改紧急联系人信息.
   *
   * @param concats 联系人信息
   * @return 受影响的行数
   */
  int updateByPrimaryKey(PassengerConcats concats);

  /**
   * 根据乘客Id查询紧急联系人列表.
   *
   * @param passengerId 乘客Id
   * @return 联系人列表
   */
  List<PassengerConcats> selectByPassenger(@Param("passengerId") Long passengerId);

  /**
   * 根据乘客主键分页查询联系人信息.
   *
   * @param passengerId 乘客主键，为null则查询所有
   * @param offset      偏移量
   * @param rows        每页显示数据
   * @return 联系人列表
   */
  List<PassengerConcats> selectByPassengerForPage(@Param("passengerId") Long passengerId,
                                                  @Param("offset") int offset,
                                                  @Param("rows") int rows);

  /**
   * 根据乘客主键查询联系人数量.
   *
   * @param passengerId 乘客主键，为null则查询所有
   * @return 联系人数量
   */
  long countByPassenger(@Param("passengerId") Long passengerId);

  /**
   * 根据乘客主键与系统key删除联系人信息.
   *
   * @param passengerId 乘客主键
   * @return 删除的数量
   */
  int deleteByPassenger(Long passengerId);

  /**
   * 根据乘客主键删除联系人信息.
   *
   * @param passengers 乘客主键列表
   * @return 删除的数量
   */
  int deleteByPassengers(@Param("passengers")List<Long> passengers);
}